package com.da.javatest.demo.basic;

import java.lang.reflect.Method;
import java.util.ArrayList;

/**
 * @author chenlida
 * @date 2019/4/11 14:14
 * @description
 */
public class InvokeTest {
    public static void main(String[] args) throws Exception {
        ArrayList<Integer> al1 = new ArrayList<>();
        al1.add(1);
        ArrayList<String> al2 = new ArrayList<>();
        al2.add("hello");
        //int型链表和string型链表，结果为true
        System.out.println(al1.getClass() == al2.getClass());

        //定义一个包含int的链表
        ArrayList<Integer> al = new ArrayList<>();
        al.add(1);
        al.add(2);
        //获取链表的add方法，注意这里是Object.class，如果写int.class会抛出NoSuchMethodException异常
        Method m = al.getClass().getMethod("add", Object.class);
        //调用反射中的add方法加入一个string类型的元素，因为add方法的实际参数是Object
        m.invoke(al, "hello");
        System.out.println(al.get(1));
        System.out.println(al.get(2));

    }
}
